package cn.sumpu.app.guoguojie.util;

import java.util.HashMap;
import java.util.Map;

import net.sf.json.JSONObject;

import com.tencent.weibo.api.Friends_API;
import com.tencent.weibo.api.T_API;
import com.tencent.weibo.api.User_API;
import com.tencent.weibo.beans.OAuth;
import com.tencent.weibo.utils.OAuthClient;
import com.tencent.weibo.utils.WeiBoConst;

public class TencentWeibo {

	public static OAuth oauth = null;
	public static OAuthClient auth=new OAuthClient();
	
	public static String openOauth(String weiboTencentAppCallBack,String oauthType) throws Exception {
		
		initOAuth(weiboTencentAppCallBack,oauthType);  
		weiboTencentAppCallBack=weiboTencentAppCallBack+"?oauthType="+oauthType;  
			// 获取request token 
			oauth = auth.requestToken(new OAuth(Common.WEIBO_TENCENT_APP_KEY, Common.WEIBO_TENCENT_APP_SECRET, weiboTencentAppCallBack));  
			String oauth_token = oauth.getOauth_token();
			String url = "http://open.t.qq.com/cgi-bin/authorize?oauth_token="
					+ oauth_token;
		return url;
			
			
		
	}
	// 获取access token
	public static Map<String, String>  oauth(String oauthVerifier,String clientIP,String weiboTencentAppCallBack,String oauthType) throws Exception{
		initOAuth(weiboTencentAppCallBack,oauthType);
		
		oauth.setOauth_verifier(oauthVerifier);    
		oauth = auth.accessToken(oauth);
		
		String accessToken=oauth.getOauth_token();
		String accessSecret=oauth.getOauth_token_secret();
		User_API userAPI=new User_API();
		String useInfo=userAPI.info(oauth, "json");
		JSONObject jsonObj=JSONObject.fromObject(useInfo);
		JSONObject jsonData= (JSONObject) jsonObj.get("data");
		String name=jsonData.getString("nick");
		String outAccountId=jsonData.getString("name");
		Map<String, String> map=new HashMap<String, String>();
		map.put("accessToken", accessToken);
		map.put("accessSecret", accessSecret);
		map.put("outAccountName", name);
		map.put("outAccountId", outAccountId);
		//关注果果街腾讯官方微博
		Friends_API friendsAPI=new Friends_API();
		//friendsAPI.del(oauth, "json", Common.WEIBO_TENCENT_GUOGUOJIE_UID);
		friendsAPI.add(oauth, "json", Common.WEIBO_TENCENT_GUOGUOJIE_UID, clientIP);
		
	
		return map;
	}
	
	private static synchronized void initOAuth(String weiboTencentAppCallBack,String oauthType) {
		
		if (null == oauth) {
			oauth = new OAuth(Common.WEIBO_TENCENT_APP_KEY, Common.WEIBO_TENCENT_APP_SECRET, weiboTencentAppCallBack);
		} 
	}

	//发送微博
	public static void sendMessage2TencentWeibo(String text,String accessToken,String accessSecret,String clientIP) throws Exception { 
		T_API  t_API=new T_API();
		OAuth oauth = new OAuth();
		oauth.setOauth_consumer_key(Common.WEIBO_TENCENT_APP_KEY);
		oauth.setOauth_consumer_secret(Common.WEIBO_TENCENT_APP_SECRET);
		oauth.setOauth_token(accessToken);
		oauth.setOauth_token_secret(accessSecret);
		t_API.add(oauth, WeiBoConst.ResultType.ResultType_Json, text, clientIP);
	}
	
	//发送带图片的微博
	public static void sendMessagePicTencentWeibo(String text,String picUrl,String accessToken,String accessSecret,String clientIP) throws Exception { 
		T_API  t_API=new T_API();
		OAuth oauth = new OAuth();
		oauth.setOauth_consumer_key(Common.WEIBO_TENCENT_APP_KEY);
		oauth.setOauth_consumer_secret(Common.WEIBO_TENCENT_APP_SECRET);   
		oauth.setOauth_token(accessToken);
		oauth.setOauth_token_secret(accessSecret);
		t_API.add_pic(oauth, WeiBoConst.ResultType.ResultType_Json, text, clientIP, picUrl);
	
	}
	
	//取消收听
	public static void cancelAttentionTencentWeibo(String accessToken,String accessSecret) throws Exception { 
		Friends_API friendsAPI=new Friends_API();
		OAuth oauth = new OAuth();
		oauth.setOauth_consumer_key(Common.WEIBO_TENCENT_APP_KEY);
		oauth.setOauth_consumer_secret(Common.WEIBO_TENCENT_APP_SECRET);
		oauth.setOauth_token(accessToken);
		oauth.setOauth_token_secret(accessSecret);
		friendsAPI.del(oauth, "json", Common.WEIBO_TENCENT_GUOGUOJIE_UID);
	}
	
	
}
